package cn.stylefeng.guns.sys.modular.system.controller;

import cn.stylefeng.guns.base.pojo.page.LayuiPageInfo;
import cn.stylefeng.guns.sys.core.listener.DyskExcelListener;
import cn.stylefeng.guns.sys.core.util.JsonResult;
import cn.stylefeng.guns.sys.modular.system.entity.BtyDysk;
import cn.stylefeng.guns.sys.modular.system.entity.Yybb;
import cn.stylefeng.guns.sys.modular.system.mapper.BtyDyskMapper;
import cn.stylefeng.guns.sys.modular.system.model.params.BtyDyskParam;
import cn.stylefeng.guns.sys.modular.system.model.result.BtyDyskResult;
import cn.stylefeng.guns.sys.modular.system.service.BtyDyskService;
import cn.stylefeng.guns.sys.modular.system.service.YybbService;
import cn.stylefeng.roses.core.base.controller.BaseController;
import cn.stylefeng.roses.core.reqres.response.ResponseData;
import cn.stylefeng.roses.core.util.ToolUtil;
import com.alibaba.excel.EasyExcel;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.List;


/**
 * 控制器
 * @author liuy
 * @Date 2021-12-16 16:15:23
 */
@Controller
@RequestMapping("/btyDysk")
public class BtyDyskController extends BaseController {

    private String PREFIX = "/modular/system/btyDysk";

    @Autowired
    private BtyDyskService btyDyskService;
    @Resource
    private BtyDyskMapper dyskMapper;
    @Resource
    private YybbService yybbService;

    /**
     * 跳转到主页面
     *
     * @author liuy
     * @Date 2021-12-16
     */
    @RequestMapping("")
    public String index() {
        return PREFIX + "/btyDysk.html";
    }

    /**
     * 新增页面
     *
     * @author liuy
     * @Date 2021-12-16
     */
    @RequestMapping("/add")
    public String add() {
        return PREFIX + "/btyDysk_add.html";
    }

    /**
     * 编辑页面
     *
     * @author liuy
     * @Date 2021-12-16
     */
    @RequestMapping("/edit")
    public String edit() {
        return PREFIX + "/btyDysk_edit.html";
    }

    /**
     * 新增接口
     *
     * @author liuy
     * @Date 2021-12-16
     */
    @RequestMapping("/addItem")
    @ResponseBody
    public ResponseData addItem(BtyDyskParam btyDyskParam) {
        this.btyDyskService.add(btyDyskParam);
        return ResponseData.success();
    }

    /**
     * 编辑接口
     *
     * @author liuy
     * @Date 2021-12-16
     */
    @RequestMapping("/editItem")
    @ResponseBody
    public ResponseData editItem(BtyDyskParam btyDyskParam) {
        this.btyDyskService.update(btyDyskParam);
        return ResponseData.success();
    }

    /**
     * 删除接口
     *
     * @author liuy
     * @Date 2021-12-16
     */
    @RequestMapping("/delete")
    @ResponseBody
    public ResponseData delete(BtyDyskParam btyDyskParam) {
        this.btyDyskService.delete(btyDyskParam);
        return ResponseData.success();
    }

    /**
     * 查看详情接口
     *
     * @author liuy
     * @Date 2021-12-16
     */
    @RequestMapping("/detail")
    @ResponseBody
    public ResponseData detail(BtyDyskParam btyDyskParam) {
        BtyDysk detail = this.btyDyskService.getById(btyDyskParam.getId());
        return ResponseData.success(detail);
    }

    /**
     * 查询列表
     *
     * @author liuy
     * @Date 2021-12-16
     */
    @ResponseBody
    @RequestMapping("/list")
    public LayuiPageInfo list(BtyDyskParam btyDyskParam) {
        return this.btyDyskService.findPageBySpec(btyDyskParam);
    }

    /**
     * 导入excel
     */
    @RequestMapping("/import")
    @ResponseBody
    public Object addUsers(@RequestParam("file") MultipartFile file) {
        JsonResult jsonResult = new JsonResult();
        //导入之前删掉之前的数据
        dyskMapper.delete(new QueryWrapper<BtyDysk>());
        try {
            DyskExcelListener basicExcelListener = new DyskExcelListener(btyDyskService);
            EasyExcel.read(file.getInputStream(), BtyDysk.class, basicExcelListener).sheet(0).doRead();
            //导入成功之后获取区域抖音金额更新到yybb中
            List<BtyDyskResult> listQy=btyDyskService.dmList(1);
            if(listQy.size()>0){
                for (BtyDyskResult dyskResult : listQy) {
                    String yyr=dyskResult.getHxsj();
                    String dm=dyskResult.getDm();
                    BigDecimal dysk=dyskResult.getDzje();
                    BigDecimal yye=dyskResult.getYye();
                    BigDecimal sxf=dyskResult.getSxf();
                    String mdid=dyskResult.getMdid();
                    Yybb yybb=yybbService.getOne(new QueryWrapper<Yybb>().eq("dianming",dm).eq("yyr",yyr));
                    if(ToolUtil.isNotEmpty(yybb)){
                        if(ToolUtil.isNotEmpty(yybb.getDyqysj())){
                            yybb.setDyqysj(yybb.getDyqysj().add(dysk));
                        }else {
                            yybb.setDyqysj(dysk);
                        }
                        if(ToolUtil.isNotEmpty(yybb.getDyqyyye())){
                            yybb.setDyqyyye(yybb.getDyqyyye().add(yye));
                        }else {
                            yybb.setDyqyyye(yye);
                        }
                        if(ToolUtil.isNotEmpty(yybb.getDyqysxf())){
                            yybb.setDyqysxf(yybb.getDyqysxf().add(sxf));
                        }else {
                            yybb.setDyqysxf(sxf);
                        }
                        yybbService.updateById(yybb);
                        BtyDyskParam param1=new BtyDyskParam();
                        param1.setMdid(mdid);
                        param1.setState(1);
                        dyskMapper.updateByMdid(param1);
                    }
                }
            }

            //导入成功之后获取全国抖音金额更新到yybb中
            List<BtyDyskResult> list=btyDyskService.dmList(2);
            if(list.size()>0){
                for (BtyDyskResult dyskResult : list) {
                    String yyr=dyskResult.getHxsj();
                    String dm=dyskResult.getDm();
                    BigDecimal dysk=dyskResult.getDzje();
                    BigDecimal yye=dyskResult.getYye();
                    BigDecimal sxf=dyskResult.getSxf();
                    String mdid=dyskResult.getMdid();
                    Yybb yybb=yybbService.getOne(new QueryWrapper<Yybb>().eq("dianming",dm).eq("yyr",yyr));
                    if(ToolUtil.isNotEmpty(yybb)){
                        if(ToolUtil.isNotEmpty(yybb.getDy())){
                            yybb.setDy(yybb.getDy().add(dysk));
                        }else {
                            yybb.setDy(dysk);
                        }
                        if(ToolUtil.isNotEmpty(yybb.getDyyye())){
                            yybb.setDyyye(yybb.getDyyye().add(yye));
                        }else {
                            yybb.setDyyye(yye);
                        }
                        if(ToolUtil.isNotEmpty(yybb.getDysxf())){
                            yybb.setDysxf(yybb.getDysxf().add(sxf));
                        }else {
                            yybb.setDysxf(sxf);
                        }
                        yybbService.updateById(yybb);
                        BtyDyskParam param1=new BtyDyskParam();
                        param1.setMdid(mdid);
                        param1.setState(2);
                        dyskMapper.updateByMdid(param1);
                    }
                }
            }

            //导入成功之后获取团购抖音金额更新到yybb中
            List<BtyDyskResult> listTg=btyDyskService.dmList(3);
            if(listTg.size()>0){
                for (BtyDyskResult dyskResult : listTg) {
                    String yyr=dyskResult.getHxsj();
                    String dm=dyskResult.getDm();
                    BigDecimal dysk=dyskResult.getDzje();
                    BigDecimal yye=dyskResult.getYye();
                    BigDecimal sxf=dyskResult.getSxf();
                    String mdid=dyskResult.getMdid();
                    Yybb yybb=yybbService.getOne(new QueryWrapper<Yybb>().eq("dianming",dm).eq("yyr",yyr));
                    if(ToolUtil.isNotEmpty(yybb)){
                        if(ToolUtil.isNotEmpty(yybb.getDytgsj())){
                            yybb.setDytgsj(yybb.getDytgsj().add(dysk));
                        }else {
                            yybb.setDytgsj(dysk);
                        }
                        if(ToolUtil.isNotEmpty(yybb.getDytgyye())){
                            yybb.setDytgyye(yybb.getDytgyye().add(yye));
                        }else {
                            yybb.setDytgyye(yye);
                        }
                        if(ToolUtil.isNotEmpty(yybb.getDytgsxf())){
                            yybb.setDytgsxf(yybb.getDytgsxf().add(sxf));
                        }else {
                            yybb.setDytgsxf(sxf);
                        }
                        yybbService.updateById(yybb);
                        BtyDyskParam param1=new BtyDyskParam();
                        param1.setMdid(mdid);
                        param1.setState(3);
                        dyskMapper.updateByMdid(param1);
                    }
                }
            }
        }catch (Exception e) {
            e.printStackTrace();
            jsonResult.setState(0);
            jsonResult.setErrmsg(e.getMessage());
            return jsonResult;
        }
        return true;
    }

    /**
     * 导入excel
     */
    @RequestMapping("/imports")
    @ResponseBody
    public Object addUser(@RequestParam("file") MultipartFile file, BtyDyskParam mtsxfParam) {
        String fileName = file.getOriginalFilename();
        Boolean flag;
        JsonResult jsonResult = new JsonResult();
        try {
            flag = btyDyskService.batchImport(fileName, file,mtsxfParam);
        } catch (Exception e) {
            e.printStackTrace();
            jsonResult.setState(0);
            jsonResult.setErrmsg(e.getMessage());
            return jsonResult;
        }
        return flag;
    }

    /**
     * 获取导出excel列表(不分页)
     */
    @RequestMapping(value = "/listSearchExport")
    @ResponseBody
    public Object listSearchExport(BtyDyskParam dyskParam){
        return this.btyDyskService.findListBySpec(dyskParam);
    }

}


